package test06thread;

/**
 * @Author xhw
 * @Date 2023/10/19
 * @Version 1.0
 */
public class MyThread {
    //1.主函数
    public static void main(String[] args) throws InterruptedException {

        //2.创建了一个线程并且运行Print方法，参数定义了是10；
        Thread worker1 = new Thread(new Print(10));
        //采用lambda表达式
        Thread worker2 = new Thread(() -> print(10));

        //5.启动线程
        worker1.start();
        worker2.start();

        //7.等待线程结束
        worker1.join();
        worker2.join();

        //6.在这输出一个结束，是没有办法实现的，因为主线程和多线程是并行的所以可以加上join等待线程运行结束
        System.out.println("线程结束");

    }

    //3.输出的方法
    static void print(int number) {
        for (int i = 1; i <= number; i++) {
            //获取当前线程对象
            final Thread thread = Thread.currentThread();
            //展示是哪个线程在运行
            System.out.println(thread.getName() + " print:" + i);
        }
    }

    //4.布置的任务，我希望输出1到10，所以删去修饰符，采用默认的修饰符（包内可以访问其他的不行，介于公共和私有中间）
    static class Print implements Runnable {
        int number;

        //构建函数
        public Print(final int number) {
            this.number = number;
        }

        //调用print的方法
        @Override
        public void run() {
            print(number);
        }

    }
}
